#include<iostream>
#include<string.h>
using namespace std;

int N,M,P,M1,M2,set[5001];

int find_root(int x,int y){
    if(set[x]<0&&set[y]<0) return x;
    else if(set[x]<0&&set[y]>=0) return set[y];
    else if(set[x]>=0&&set[y]<0) return set[x];
    else{
        set[set[y]] = set[x];
        return set[x];    
    }
}
void toroot(){
    for (int i = 1,j; i <= N; i++)
    {   
        if (set[i]<0||set[set[i]]) continue;
        j = i;
        while (set[j]>=0)
            j=set[j];
            if(set[j]<0) set[i]=set[j];
    }
}
bool isrelate(int x,int y){
    if(set[x]==y||set[y]==x||set[x]==set[y]) return true;
    return false;
}

int main(){
    scanf("%d%d%d",&N,&M,&P);
    memset(set,-1,sizeof(set));
    while (M--)
    {
        scanf("%d%d",&M1,&M2);
        int root = find_root(M1,M2);
        set[M1] = root==M1? set[M1]:root;
        set[M2] = root==M2? set[M2]:root;
    }
    toroot();
    while (P--)
    {
        scanf("%d%d",&M1,&M2);
        if(isrelate(M1,M2))puts("Yes");
        else puts("No");
    }
    return 0;
}